package com.joey.concurrency.example.publish;

import com.joey.concurrency.annotation.NotRecommend;
import com.joey.concurrency.annotation.NotThreadSafe;
import lombok.extern.slf4j.Slf4j;

/**
 * @Author hyy
 **/
@Slf4j
@NotThreadSafe
@NotRecommend
public class Escape {

    private int thisCanBeEscape = 0;

    /**
     * 可能存在一个对象还没有构造完成时，就使它被其他线程所见。可能存在不安全因素。
     * 一个导致this在构造期间溢出的错误
     */
    public Escape(){
        new InnerClass();
    }

    private class InnerClass{
        public InnerClass(){
            log.info("{}",Escape.this.thisCanBeEscape);
        }
    }

    public static void main(String[] args) {
        new Escape();
    }

}
